home *** CD-ROM | disk | FTP | other *** search
/ The Programmer Disk / The Programmer Disk (Microforum).iso / xpro / qb2 / pro15 / boxscape.pas < prev    next >
Pascal/Delphi Source File  |  1990-08-20  |  3KB  |  128 lines

  1. {
  2.  ******************************************************************************
  3.  * BOXSCAPE - Line box demo.                              *
  4.  *                                          *
  5.  * Written for GRAFIX by:  Joseph A. Albrecht                      *
  6.  *                                          *
  7.  * Press F1 to pause program                              *
  8.  * Press F2 to restart program                              *
  9.  * Press F3 to toggle between slow and fast drawing modes              *
  10.  * Press F10 to toggle between 320 and 640 graphic modes              *
  11.  * Press ESC to exit program                              *
  12.  ******************************************************************************
  13. }
  14.  
  15. PROGRAM BoxScape;
  16.  
  17. USES
  18.   Crt,
  19.   Grafix;
  20.  
  21. VAR
  22.   Graphics, MaxX, BoxColor, A, B, X, Y, X1, Y1, X2, Y2: INTEGER;
  23.   EndProgram, Loop, Fast, Tandy11: BOOLEAN;
  24.  
  25. PROCEDURE CheckKey;
  26.  
  27. VAR
  28.   Ch: CHAR;
  29.  
  30. BEGIN
  31.  
  32.   Ch := #255;
  33.   IF KeyPressed THEN
  34.     Ch := ReadKey;
  35.   IF Ch = #27 THEN
  36.      BEGIN
  37.        Loop := False;
  38.        EndProgram := True;
  39.      END;
  40.   IF Ch = #00 THEN
  41.     BEGIN
  42.       Ch := ReadKey;
  43.       IF Ch = #59 THEN
  44.     BEGIN
  45.       WaitKey;
  46.       ClearKey;
  47.     END;
  48.       IF Ch = #60 THEN
  49.     Loop := False;
  50.       IF Ch = #61 THEN
  51.     IF Fast = True THEN
  52.       Fast := False
  53.     ELSE
  54.       Fast := True;
  55.       IF (Ch = #68) AND (Tandy11 = True) THEN
  56.     BEGIN
  57.       IF Graphics = 320 THEN
  58.         BEGIN
  59.           Graphics := 640;
  60.           MaxX := 639;
  61.           Loop := False;
  62.           HighGraphics;
  63.         END
  64.       ELSE
  65.          BEGIN
  66.            Graphics := 320;
  67.            MaxX := 319;
  68.            Loop := False;
  69.            MediumGraphics;
  70.          END;
  71.     END;
  72.     END;
  73.  
  74. END;
  75.  
  76. {Mainline}
  77. BEGIN
  78.  
  79.   Graphics := 320;
  80.   MaxX := 319;
  81.   Fast := False;
  82.   EndProgram := False;
  83.   Loop := True;
  84.   GetTandy11(Tandy11);
  85.   MediumGraphics;
  86.  
  87.   WHILE EndProgram = False DO
  88.     BEGIN
  89.       Randomize;
  90.       ClearScreen;
  91.       WHILE Loop = True DO
  92.     BEGIN
  93.       X := Random(15) + 3;
  94.       Y := Random(15) + 3;
  95.       A := 1;
  96.       WHILE (A <= 5) AND (Loop = True) DO
  97.         BEGIN
  98.           X1 := 0;
  99.           X2 := MaxX;
  100.           Y1 := 0;
  101.           Y2 := 199;
  102.           B := Random(15) + 1;
  103.           WHILE B = BoxColor DO
  104.         B := Random(15) + 1;
  105.           BoxColor := B;
  106.           IF A = 5 THEN
  107.         BoxColor := 0;
  108.           WHILE (X1 < MaxX) AND (Y1 < 199) AND (Loop = True) DO
  109.         BEGIN
  110.           DrawBox(X1, Y1, X2, Y2, BoxColor);
  111.           IF Fast = False THEN
  112.             Pause(1);
  113.           X1 := X1 + Y;
  114.           Y1 := Y1 + X;
  115.           X2 := X2 - Y;
  116.           Y2 := Y2 - X;
  117.           CheckKey;
  118.         END;
  119.           Inc(A);
  120.         END;
  121.     END;
  122.       IF EndProgram = False THEN
  123.     Loop := True;
  124.     END;
  125.   ExitGraphics;
  126.  
  127. END.
  128.